完成数据源、网络、资源的准备配置后,您可以根据同步场景选择同步解决方案,创建并执行同步任务,将源端数据同步至目标端。本文为您介绍同步任务的通用配置流程,不同的同步方案配置流程可能存在差异,对应方案配置详情请以界面为准。
前提条件
已完成数据源配置。您需要在数据集成同步任务配置前,配置好您需要同步的源端和目标端数据库,以便在同步任务配置过程中,可通过选择数据源名称来控制同步任务的读取和写入数据库。同步任务支持的数据源及其配置详情请参见支持的数据源及同步方案。
说明数据源相关能力介绍详情请参见:数据源概述。
已完成数据源环境准备。您可以基于您需要进行的同步配置,在同步任务执行前,授予数据源配置的账号在数据库进行相应操作的权限。详情请参见:数据库环境准备概述。
背景信息
数据集成基于源端数据库与目标端数据库类型为您提供丰富的数据同步任务,同步类型包括:整库离线同步(一次性全量同步、周期性全量同步、离线全增量同步、一次性增量同步、周期性增量同步)、一键实时同步(一次性全量同步,实时增量同步)。不同源端与目标端数据库支持的同步方案不同,具体支持的方案详情请参考产品界面。更多同步任务产品能力介绍,详情请参见:数据集成侧同步任务能力说明。
使用限制
跨时区同步限制:
同步任务暂不支持跨时区同步数据。如果同步任务中读取和写入的数据源与使用的DataWorks资源组不在同一个时区,将会导致时间类型字段同步错误。
同步库个数限制:
整库离线同步仅支持同步数据源指定的默认库。
一键实时同步支持同步对应RDS实例下数据源配置账号有权限的所有数据库。
注意事项
DataWorks实时同步通常在以下情况下需要手动设置位点:
同步任务中断后恢复:如果同步任务中断,重启任务时需要手动设置位点为中断的时间点,以确保从断点继续同步。
数据丢失或异常:如果在同步过程中发现数据丢失或异常,需要手动重置位点到数据写入之前的某个时间点,以确保数据完整。
调整任务配置:在调整任务配置后,例如修改目标表或字段映射,需要手动设置位点以确保数据同步的准确性。
如果您在执行同步任务时提示位点错误或不存在,请按如下方式解决:
重置位点:在启动实时同步任务时,重置位点并选择源库可用的最早位点。
调整Binlog保留时间:如果数据库位点过期,可以考虑在MySQL数据库中调整Binlog的保留时间,例如设置为7天。
数据同步:如果数据已经丢失,可以考虑重新全量同步,或者配置一个离线同步任务来手动同步丢失的数据。
进入同步任务
同步任务的创建入口在数据集成模块,您需要前往数据集成模块页面进行创建。
进入数据集成页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入数据集成。
操作流程
步骤一:创建同步任务
您可以通过以下两种方式创建同步任务:
方式一:在同步任务页面,选择来源和去向,单击开始创建。
方式二:在同步任务页面,如果任务列表为空,单击请创建。
步骤二:选择同步方案
您可以根据业务需要选择要同步的来源和去向数据源类型。选择后,数据集成基于源端数据库与目标端数据库类型为您展示目前支持的同步类型,您可以根据业务需要进行选择。
支持的数据源及同步方案请参见:支持的数据源及同步方案。
步骤三:网络与资源配置
在此步骤中,您需要选择要同步的来源与去向数据源,以及用于执行同步任务的资源组。并测试资源组与数据源的网络连通。
若还未创建数据源,请单击界面的新建数据源按钮,新建数据源。详情请参见:数据源概述。
步骤四:同步任务配置
根据具体任务类型按界面说明进行同步相关配置。
步骤五:启动同步任务
您可以执行任务并查看任务详细执行过程。
进入 界面,找到已创建的同步方案。
单击操作列的启动/提交执行按钮,启动同步的运行。
单击操作列的执行详情,查看任务的详细执行过程。
附录:高级配置
设置同步来源与规则
选择源端数据源中需要同步的库和表后,同步任务默认将源端数据库、数据表写入目标端同名schema或同名表中,如果目标端不存在该schema或表,将会自动创建。同时,您可以通过设置表(库)名的映射规则定义最终写入目标端的schema或表名称。实现将多张表数据写入到同一个表中,或统一将源端某固定前缀的库名或表名在写入目标库或表时更新为其他前缀。
源表名和目标表名转换规则:源端表名支持通过正则表达式转换为目标端最终写入的表名。
示例1:将源端doc_前缀的表数据,写入前缀为pre_的目标表中。
示例2:将多张表数据写入到一张目标表。
将源端名称为 "table_01","table_02","table_03" 的表同步至一张名为 "my_table" 的表中。配置正则表名转换规则为:源:table.*,目标:my_table。
目标表名规则:支持您使用内置的变量组合生成目标表名,同时,对转换后的目标表名支持添加前缀和后缀。可使用的内置变量有:
${db_table_name_src_transed}:“源表名和目标表名转换规则”中的转换完成之后的表名。
${db_name_src_transed}:“源库名和目标Schema名转换规则”中的转换完成之后的目标Schema名。
${ds_name_src}:源数据源名。
示例:对上一步源表名和目标表名转换规则转换后的表名做进一步字符串拼接处理,使用${db_table_name_src_transed}代表上一步的处理结果“my_table”,再为该内置变量增加前缀和后缀,例如,pre_${db_table_name_src_transed}_post,最终就映射到了名为“pre_my_table_post”的目标表。
源库名和目标Schema名转换规则:源端schema名支持通过正则表达式转换为目标端最终写入的schema名。
示例:将源端doc_前缀的库名替换为pre_前缀。
设置目标表
您可以定义写入目标表的相关属性,例如,写入模式、是否写入分区表以及分区的字段名称、选择写入目标端已有表还是新建表、以及是否需要编辑字段并为目标字段赋值等。
此步骤中,单击刷新源端与目标端表映射按钮后,将会根据配置的表规则来映射源端表与目标端表的写入关系。
此处的配置项根据目标端数据源类型的不同而存在一定的差异,具体以各方案实际配置界面为准。详情请参见:支持的数据源及同步方案。
设置写入规则
此步骤根据选择的同步方案类型不同,需要进行的配置存在一定差异:
DDL或DML消息处理规则(一键实时同步任务):
来源数据源会包含许多DDL或DML操作,为保障数据符合预期,您可以根据写入的目标端数据源类型配置DDL或DML消息处理策略。DDL消息处理策略详情请参见:DDL消息处理规则、DML消息处理策略。
同步规则设置(整库离线同步):
当使用整库离线同步时,需要定义同步策略。例如,增量同步的过滤条件设置、同步任务的调度周期设置等。
增量同步:您可通过where语句对待同步的数据表进行过滤,且只需在增量条件框中填写where子句,无需写where关键字。同时,在写where子句时,您可以使用系统内置变量,例如使用
${bdp.system.bizdate}
指代业务日期、使用${bdp.system.cyctime}
指代定时时间等。说明您可以使用调度参数来指定同步源表及目标表的数据范围,调度参数使用说明请参见:数据集成使用调度参数的相关说明。
周期设置:由于需要进行周期性调度,所以需要定义周期性调度任务时的相关属性,包括调度周期、生效日期、暂停调度等。当前方案的调度配置与DataWorks中节点的调度配置一致,参数详情可参见时间属性配置说明。
设置任务运行资源
在此步骤中,您可以配置任务名称及任务执行所使用的资源组,同时,数据集成提供数据库最大连接数、并发数等配置的默认值,如果您需要对任务做精细化配置,您可通过高级配置进行修改。
如果您选择一键实时同步方案,该方案将分别创建用于同步全量数据的离线同步任务,和用于同步增量数据的实时同步任务。您需要在运行资源设置界面分别配置离线同步任务的及实时同步任务的相关属性。包括实时同步子任务和离线同步子任务的任务名称、实时增量同步及离线全量同步使用的独享数据集成资源组、离线同步任务所使用的调度资源组。
如果您选择整库离线同步方案,您需要配置离线任务名称及使用的调度资源组与数据集成任务执行资源组。
DataWorks的离线同步任务通过调度资源组将其下发到数据集成任务执行资源组上执行,所以离线同步任务除了涉及数据集成任务执行资源组外,还会占用调度资源组资源。如果使用了独享调度资源组,将会产生调度实例费用。您可通过DataWorks资源组概述对该机制进行了解。
离线和实时同步任务推荐使用不同的资源组,以便任务分开执行。如果选择同一个资源组,任务混跑会带来资源抢占、运行态互相影响等问题。例如,CPU、内存、网络等互相影响,可能会导致离线任务变慢或实时任务延迟等问题,甚至在资源不足的极端情况下,可能会出现任务被OOM KILLER杀掉等问题。
后续步骤
完成任务配置后,您可以对已创建的任务进行管理、执行加减表操作,或对任务配置监控报警,并查看任务运行的关键指标等。详情请参见:全增量同步任务运维。